#ifndef __BSP_BUZZER_H
#define __BSP_BUZZER_H

#include "stm32f10x.h"

// 固定PWM周期（微秒）。1kHz = 1000us
#define BUZZER_PWM_PERIOD_US 1000

//定义蜂鸣器引脚
#define BUZZER_GPIO_PORT    GPIOB
#define BUZZER_GPIO_PIN     GPIO_Pin_7
#define BUZZER_GPIO_CLK     RCC_APB2Periph_GPIOB
//宏定义蜂鸣器的状态
#define BUZZER_OFF    GPIO_ResetBits(BUZZER_GPIO_PORT,BUZZER_GPIO_PIN)
#define BUZZER_ON     GPIO_SetBits(BUZZER_GPIO_PORT,BUZZER_GPIO_PIN)
//函数声明
void BUZZER_GPIO_Config(void);
void BUZZER_InitState(void);
// 固定周期输出，占空比D%（0~100），持续时间ms
void BUZZER_OutputDuty(uint8_t duty_percent, uint32_t duration_ms);
// 非阻塞：给定开启时长on_ms，调用该任务函数即可按on_ms后自动关闭
void BUZZER_Task_Pulse(uint32_t on_ms);
// 非阻塞：周期性鸣叫（on_ms响，off_ms静音），enable=1生效；需循环调用
void BUZZER_Task_Beep(uint32_t on_ms, uint32_t off_ms, uint8_t enable);

#endif
